1. Field of the Invention
The invention relates generally to SAS domains and more specifically relates to apparatus, systems, and methods for multiple unidirectional virtual connections between SAS devices in a SAS domain.
2. Discussion of Related Art
Serial Attached SCSI (“SAS”) is a popular protocol and medium for connecting the components of a networked storage/computing architecture. In general, SAS standards define a SAS domain as including one or more SAS initiators coupled to one or more SAS target devices zero or more SAS expander devices. In general, a SAS initiator device is coupled to a SAS target device as a point to point connection. To enhance flexibility in connecting a SAS initiator device to other SAS target devices, a SAS domain may include one or more SAS expanders to provide, in essence, a switched fabric for coupling any of the SAS initiators in a point to point connection to any of the SAS target devices of the SAS domain.
More generally SAS initiators and SAS target device may each be referred to as a SAS end device (or endpoint device) in that many devices may act in the role of an initiator at times and may act in the role of a target at time. Regardless of the role of a device as a SAS initiator or as a SAS target, any SAS compliant device may attempt to open a connection with another device. It is common, for example, for a host bus adapter SAS initiator device to open a connection to a SAS storage target device. However, the storage device may later open a connection back to a requesting host adapter for purposes of returning requested read data. Thus the terms “initiator” and “target” are generally avoided in this discussion. Both initiator and target devices in a connection may simply be referred to herein as an “end device” or as an “endpoint device” or even more simply as a “device”. An end device that attempts to open a connection to another end device may also be referred to herein as “opener” or “opening device” while the device that accepts the open request may be referred to as a “opened device”.
The SAS standards provide for a full duplex connection between two connected SAS devices. In principle, such a full duplex connection allows the opening device to transmit frames of information (e.g., “data frames”) to the opened device substantially in parallel with the opened device transmitting information back to the opener. In accordance with these SAS specifications, such a full duplex connection allows for near full utilization of the point to point connection between the two end devices (some available bandwidth is always consumed by overhead exchanges associated with the protocols). This and other related SAS specifications are well known to those of ordinary skill in the art and are also readily available at, for example, www.t10.org.
In practice it is rare that the connected SAS devices (such as a single disk drive device coupled to an I/O request controller) both have data ready to be transmitted to the other device of an open connection. Even in the context of a SAS host adapter device coupled to a RAID storage subsystem SAS device (depending on the architecture of the RAID storage controller) it may be rare for the host and storage system to fully utilize the available bandwidth of a true full duplex connection. Thus, full (or nearly full) utilization of a SAS connection through true full duplex communication is rare to nonexistent in practice. Rather, empirical test data has shown that the utilization of a SAS connection between two devices tends to be less than 50% of the available communication bandwidth. One aspect of such under-utilization derives from inherent overhead and delays associated with the SAS protocols. However, the most significant contributor to such under-utilization is the underlying communication being performed such that a host system (e.g., a SAS initiator) transmits its one or more frames representing a request to be completed by a storage device (e.g., a single disk drive or a more complex RAID or other arrayed storage device). The storage device typically requires some substantial processing time to complete the request received from the host system. Thus, the SAS target device (e.g., the storage device) rarely has data ready for transmission to the SAS initiator at the same time that the SAS initiator has opened a connection for its transmission of a request. Therefore, an open connection is typically closed upon completion of a transmission from the initiator to the target only to be reconnected when the target device is ready to transmit the requested data back to the initiator.
It is evident from the above discussion that an ongoing need exists to improve bandwidth utilization between SAS initiator devices and SAS target devices in a SAS domain.